<?php
/**
 * MySendMailBean.class.php
 * 
 * (C) 2009, tetsuya.odaka(EzoGP).
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/* 
 * SMTPサーバーへメイルを送信するオブジェクト （添付あり:Multipart）
 * 
 *  (a) コンストラクタに渡す引数
 *       SMTPサーバーのホスト名、アドレス
 *       ポートNo
 *       SMTP-Authを使うか（true/false）
 *       $mailFrom : 送信元メイルアドレス
 *  (b) 結果 
 *       true : 送信成功
 *       PEAR_ERROR object
 *  
 * dependencies: PEAR::Mail, Mail_mime
 * 
 * author	；t.odaka
 * date		;2005/10/13
 * 
 * modified; 2009/3/14	t.odaka
 * 			 2009/5/22	t.odaka	デバッグログの削除
 *           2009/11/12  t.odaka SendMailBeanから移行。
 *            ホスト名などをconstructorの引数に持たせる。
 *            
 * 		  	 2009/11/27 t.odaka
 *           Config.phpのinclude_pathにMyznalaをいれたことによる
 *           プログラムパス調整
 *            
*/

require_once("Config.php");
require_once("Mail.php");
require_once("Mail/mime.php");

class MySendMailBean {
	/* プロパティー */
	var $_Smtphost, $Smtpport, $Smtpauth, $_To,
		$_Cc, $_Bcc, $_From, 
		$_Subject, $_Message, $_Attach;
	
	/* デフォルトのコンストラクタ */
/*
	function __construct() {
		
		require("../Myznala/debugLog.php");
		// debugログの出力
//		$myDebugLog->debug("constructor: start");
		
		$this->setSmtphost();
		$this->setSmtpport();
		$this->setSmtpauth();
		$this->setFrom();
		
		// debugログの出力
//		$myDebugLog->debug("constructor: end");
	}
*/
	/*
	 * コンストラクタ
	 * 
	 *  引数：　$smtpHost : SMTPサーバーのホスト名、アドレス
	 *        $smtpPort : SMTPサーバーのポート
	 *        $smtpAuth : SMTP-Authを使うか（true/false）
	 *        $mailFrom : 送信元メイルアドレス
	 */
	function __construct(
					$smtpHost,$smtpPort,
					$smtpAuth,$mailFrom) {
						
		$this->_Smtphost = $smtpHost;
		$this->_Smtpport = $smtpPort;
		$this->_Smtpauth = $smtpAuth;
		$this->_From = $mailFrom;
		
	}

	/* getter */
	function getSmtphost(){return $this->_Smtphost;}
	function getSmtpport(){return $this->_Smtpport;}
	function getSmtpauth(){return $this->_Smtpauth;}
	function getTo(){return $this->_To;}
	function getCc(){return $this->_Cc;}
	function getBcc(){return $this->_Bcc;}
	function getFrom(){return $this->_From;}
	function getSubject(){return $this->_Subject;}
	function getMessage(){return $this->_Message;}
	function getAttach(){return $this->_Attach;}

	/* setter */
/*	2009-11-12: t.odaka コンストラクタでセットする。
    function setSmtphost(){$this->_Smtphost=SMTPHOST;}
	function setSmtpport(){$this->_Smtpport=SMTPPORT;}
	function setSmtpauth(){$this->_Smtpauth=SMTPAUTH;}
	function setFrom(){$this->_From=MAILFROM;}
*/
	function setTo($arg){$this->_To=$arg;}
	function setCc($arg){$this->_Cc=$arg;}
	function setBcc($arg){$this->_Bcc=$arg;}
	function setSubject($arg){
		//jis(iso-2022-jp後、base64に変換)
//		$wk = mb_convert_encoding($arg, "ISO-2022-JP", "auto");
//		$wk = base64_encode($wk);
//		$wk = '=?ISO-2022-JP?B?'.$wk;
//		$wk = '=?ISO-2022-JP?B?'.$wk.'?=';
		$this->_Subject=$arg;
	}
	function setMessage($arg){$this->_Message=$arg;}
	function setAttach($arg){$this->_Attach=$arg;}

	function mailsend(){
		// t.odaka 	2009/11/27
		require("debugLog.php");
//		require("../Myznala/debugLog.php");
		
		$mail_array = array(
			'host'	=>	$this->_Smtphost,
			'port'	=>	$this->_Smtpport,
			'auth'	=>	$this->_Smtpauth
		);
		
		// Mail　オブジェクトの作成		
		$mail_obj	=&	Mail::factory('smtp',$mail_array);
		
		$headers=array();
		$headers["From"]=$this->_From;
		$headers["To"]=$this->_To.'<'.$this->_To.'>';
		$headers["Cc"]=$this->_Cc.'<'.$this->_Cc.'>';
		$headers["Bcc"]=$this->_Bcc.'<'.$this->_Bcc.'>';
		$headers["Subject"]
			=mb_convert_encoding($this->_Subject,'ISO-2022-JP','auto');
//		$headers["Subject"]=$this->_Subject;
		
		$recipient = $this->_To;

		// debugログの出力
//		$myDebugLog->debug("recipient: ".$recipient);
		
		$body=mb_convert_encoding($this->_Message,'ISO-2022-JP','auto');
		
		// Mail_Mime　オブジェクトの作成		
		$o_mime=new Mail_Mime("\n");
		
		$o_mime->setTxtBody($body);
		
		if($this->_Attach!=null){
			$o_mime->addAttachment($this->_Attach);
		}

		$build_param=array(
			"head_charset" => "iso-2022-jp",
			"text_charset" => "iso-2022-jp"
		);
		
		$body = $o_mime->get($build_param);
		$headers = $o_mime->headers($headers);
		
		/*
		 * メイルを送る。
		 *  成功ならtrue、失敗ならPEAR_ERRORが戻る。
		 *  http://pear.php.net/manual/en/package.mail.mail.send.php
		 */
		$ret = $mail_obj->send($recipient,$headers,$body);
		
		return $ret;
	}
}
?>